//======================
//模型：Admin模型, admin表
//======================
let {DataTypes, Model} = require('sequelize');

class Admin extends Model {}

//定义模型结构, 数据表结构
Admin.init({
  id: {
    //数据类型：INTEGER整型, UNSIGNED无符号
    type: DataTypes.INTEGER.UNSIGNED,
    //自动递增
    autoIncrement: true,
    //主键
    primaryKey: true,

    //不允许为null
    allowNull: false,

    //注释
    comment: '表id'
  },

  adminId: {
    type: DataTypes.STRING(30),
    allowNull: false,
    //默认值
    defaultValue: '',
    comment: '管理员id'
  },

  adminName: {
    type: DataTypes.STRING(30),
    allowNull: false,
    defaultValue: '',
    comment: '昵称'
  },

  password: {
    type: DataTypes.STRING(32),
    allowNull: false,
    defaultValue: '',
    comment: '密码'
  },

  email: {
    type: DataTypes.STRING(40),
    allowNull: false,
    defaultValue: '',
    comment: '邮箱'
  },

  phone: {
    type: DataTypes.STRING(11),
    allowNull: true,
    defaultValue: '',
    comment: '手机号'
  },

  // sex: {
  //   type: DataTypes.BOOLEAN,
  //   allowNull: false,
  //   defaultValue: 2,
  //   comment: '管理员性别,0女1男2保密'
  // },

  position: {
    type: DataTypes.INTEGER,
    allowNull: false,
    defaultValue: 0,
    comment: '管理员职务,0普通1超管'
  },

  avatar: {
    type: DataTypes.STRING(100),
    allowNull: false,
    defaultValue: 'admin_default.jpg',
    comment: '管理员头像'
  }
}, {

  //指定连接实例，这样才知道在指定数据库创建admin表
  sequelize,

  //模型名称, 当没有指定表名时，sequelize推断名称为模型名称的复数 ==> admins作为表名
  modelName: 'admin',

  //不推断，直接使用模型作为表名 ==> admin作为表名
  freezeTableName: true,

  //指定表名
  tableName: 'admin'
})

//同步数据库表
Admin.sync({force: false});

module.exports = Admin;
